package biblioteca.dao;

import java.util.List;

import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import biblioteca.entidade.Emprestimo;

/**
 * Session Bean implementation class EmprestimoDAOBean
 */
@Stateless
@LocalBean
public class EmprestimoDAOBean implements EmprestimoDAO {


    @PersistenceContext(unitName="biblioteca")
    private EntityManager em;

	/**
     * Default constructor. 
     */
    public EmprestimoDAOBean() {
        // TODO Auto-generated constructor stub
    }
	
    
    public void criar(Emprestimo emprestimo) {
    	em.persist(emprestimo);
    }
    
    public void atualizar(Emprestimo emprestimo) {
    	em.merge(emprestimo);
    }
    
    public void deletar(Emprestimo emprestimo) {
    	em.remove(emprestimo);
	}
    
    public Emprestimo recuperar(int id) {
    	return em.find(Emprestimo.class, id);
    }
    
    public List<Emprestimo> recuperar() {
    	return (List<Emprestimo>) em.createQuery("SELECT e FROM Emprestimo e").getResultList();
    }
    
    public List<Emprestimo> recuperar(String matricula) {
    	return (List<Emprestimo>) em.createQuery("SELECT e FROM Emprestimo e INNER JOIN e.livros em WHERE e.usuario.matricula = :matricula AND em.dataDevolucao IS NULL")
    			.setParameter("matricula", matricula)
    			.getResultList();
    }

}
